﻿/*
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
				  Universidad Nacional Autónoma de México
						Soft-Express
				 " Tomar tus ideas despierta soluciones "
					      Semestre 2012-1

   Script que carga los Procedimientos Almacenados para actualización de los datos de los 8 Formularios que 
   comprende la primera parte del sistema los cuales le corresponden al Hospital Sede.

   Autor: Erick Orlando Matla Cruz (Administrador de Desarrollo)
   Fecha: 15 de Octubre del 2011

   Procedimientos Almacenados definidos como funciones postgresql en este script:
   sp_ActualizaFormulario1
   sp_ActualizaAuxiliarFormulario1
   sp_ActualizaFormulario2
   sp_ActualizaFormulario3
   sp_ActualizaAuxiliar1Formulario3
   sp_ActualizaAuxiliar2Formulario3
   sp_ActualizaAuxiliar3Formulario3
   sp_ActualizaFormulario4
   sp_ActualizaFormulario5
   sp_ActualizaAuxiliarFormulario5
   sp_ActualizaFormulario6
   sp_ActualizaFormulario7
   sp_ActualizaFormulario8
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
*/

-- Procedimiento que inserta los valores del Formulario1

CREATE OR REPLACE FUNCTION sp_ActualizaFormulario1(
PnIdHospital		INTEGER,
PnIdCurso		INTEGER,
PnMatutino		INTEGER,
PnVespertino		INTEGER,
PnNocturno		INTEGER,
PnFines			INTEGER,
PnCAdultos		INTEGER,
PnCNinos		INTEGER,
PnCCunas		INTEGER,
PnCIncubadoras		INTEGER,
PsCOtras		VARCHAR(10),
PnCOtras		INTEGER,
PsCOtrasEspecificacion	VARCHAR(512),
PnNUrgencias		INTEGER,
PnNTIntensiva		INTEGER,
PnNTIntermedia		INTEGER,
PnNAmbulatoria		INTEGER,
PnNLabGab		INTEGER,
PnNNeonatos		INTEGER,
PnNRecuperacion		INTEGER,
PnNParto		INTEGER,
PsNOtras		VARCHAR(10),
PnNOtras		INTEGER,
PsNOtrasEspecificacion	VARCHAR(512),
PsQuirofanos		VARCHAR(10),
PnQuirofanos		INTEGER,
PsExpulsion		VARCHAR(10),
PnExpulsion		INTEGER,
PsExterna		VARCHAR(10),
PnExterna		INTEGER,
PsRegistro		VARCHAR(10),
PnRegistro		INTEGER,
PsManual		VARCHAR(10),
PnManual		INTEGER,
PsMaterial		VARCHAR(10),
PnMaterial		INTEGER,
PsRutina		VARCHAR(10),
PsCondicionesRutina	VARCHAR(10),
PsComentarioRutina	VARCHAR(512),
PsPruebas		VARCHAR(10),
PsEspecifPruebas	VARCHAR(512),
PsCondicionesPruebas	VARCHAR(10),
PsComentarioPruebas	VARCHAR(512),
PsGabinetes		VARCHAR(10),
PsEspecifGabinetes	VARCHAR(512),
PsCondicionesGabinetes	VARCHAR(10),
PsComentarioGabinetes	VARCHAR(512),
PsOtrosEquip		VARCHAR(10),
PsEspecifOtrosEquip	VARCHAR(512),
PsCondicionOtrosEquip	VARCHAR(10),
PsComentariOtrosEquip	VARCHAR(512),
PsMorbilidad		VARCHAR(10),
PsMortalidad		VARCHAR(10),
PsInfecciones		VARCHAR(10),
PsExpediente		VARCHAR(10),
PsBioetica		VARCHAR(10),
PsAuditoria		VARCHAR(10),
PsEnsenanza		VARCHAR(10),
PsBioseguridad		VARCHAR(10),
PsCientifico		VARCHAR(10),
PsOtrosComites		VARCHAR(10),
PsEspecifOtrosComites	VARCHAR(512),
PnIdFormulario1		INTEGER
)
RETURNS VOID
AS
'
BEGIN

	UPDATE Formulario1 SET(nEspecialistasMatutino,nEspecialistasVespertino,nEspecialistasNocturno,nEspecialistasFinesSemana,nCamasAdultos,nCamasNinos,
				nCunas,nIncubadoras,sOtrasCensables,nOtrasCensables,sEspecificacionCensables,nUrgencias,nTerapiaIntensiva,nTerapiaIntermedia,
				nCirugiaAmbulatoria,nLaboratorioGabinete,nCunasNeonatosSanos,nCamasRecuperacionQuirofano,nTrabajoParto,sOtrasNoCensables,
				nOtrasNoCensables,sEspecificacionNoCensables,sQuirofanos,nQuirofanos,sSalasExpulsion,nSalasExpulsion,sConsultaExterna,
				nConsultaExterna,sSistemaRegistroCodificacion,nSistemaRegistroCodificacion,sManualNormasProcedimientos,nManualNormasProcedimientos,
				sArchivoMaterialDidactico,nArchivoMaterialDidactico,sLaboratorioRutina,sCondicionesLaboratorioRutina,sComentariosLaboratorioRutina,
				sLaboratoriosEspeciales,sEspecificacionLaboratoriosEspeciales,sCondicionesLaboratoriosEspeciales,sComentarioLaboratoriosEspeciales,
				sGabinetes,sEspecificacionGabinetes,sCondicionGabinetes,sComentariosGabinetes,sOtrosDiagnosticoTratamiento,sEspecificacionOtrosDiagnosticoTratamiento,
				sCondicionesOtrosDiagnosticoTratamiento,sComentarioOtrosDiagnosticoTratamiento,sComiteMorbilidad,sComiteMortalidad,sComiteInfecciones,sComiteExpedienteClinico,
				sComiteBioeticaEtica,sComiteAuditoriaMedica,sComiteEnsenanza,sComiteBioseguridad,sComiteCientifico,sOtrosComites,
				sEspecificacionOtrosComites,nIdHospital,nIdCurso)
	=
		(PnMatutino,PnVespertino,PnNocturno,PnFines,PnCAdultos,PnCNinos,PnCCunas,PnCIncubadoras,PsCOtras,PnCOtras,PsCOtrasEspecificacion,PnNUrgencias,PnNTIntensiva,
		PnNTIntermedia,PnNAmbulatoria,PnNLabGab,PnNNeonatos,PnNRecuperacion,PnNParto,PsNOtras,PnNOtras,PsNOtrasEspecificacion,PsQuirofanos,PnQuirofanos,PsExpulsion,
		PnExpulsion,PsExterna,PnExterna,PsRegistro,PnRegistro,PsManual,PnManual,PsMaterial,PnMaterial,PsRutina,PsCondicionesRutina,PsComentarioRutina,PsPruebas,
		PsEspecifPruebas,PsCondicionesPruebas,PsComentarioPruebas,PsGabinetes,PsEspecifGabinetes,PsCondicionesGabinetes,PsComentarioGabinetes,PsOtrosEquip,
		PsEspecifOtrosEquip,PsCondicionOtrosEquip,PsComentariOtrosEquip,PsMorbilidad,PsMortalidad,PsInfecciones,PsExpediente,PsBioetica,PsAuditoria,PsEnsenanza,
		PsBioseguridad,PsCientifico,PsOtrosComites,PsEspecifOtrosComites,PnIdHospital,PnIdCurso)
	WHERE nIdFormulario1 = PnIdFormulario1;

END;
' LANGUAGE  'plpgsql';


-- Prodecimiento auxiliar que inserta datos del Formulario1

CREATE OR REPLACE FUNCTION sp_ActualizaAuxiliarFormulario1(
PsProfesor1		VARCHAR(40),
PsNombramiento1		VARCHAR(15),
PsGrado1		VARCHAR(15),
PsAntiguedad1		INTEGER,
PsCursos1		VARCHAR(15),
PsCertificado1		VARCHAR(15),
PsProfesor2		VARCHAR(40),
PsNombramiento2		VARCHAR(15),
PsGrado2		VARCHAR(15),
PsAntiguedad2		INTEGER,
PsCursos2		VARCHAR(15),
PsCertificado2		VARCHAR(15),
PsProfesor3		VARCHAR(40),
PsNombramiento3		VARCHAR(15),
PsGrado3		VARCHAR(15),
PsAntiguedad3		INTEGER,
PsCursos3		VARCHAR(15),
PsCertificado3		VARCHAR(15),
PsProfesor4		VARCHAR(40),
PsNombramiento4		VARCHAR(15),
PsGrado4		VARCHAR(15),
PsAntiguedad4		INTEGER,
PsCursos4		VARCHAR(15),
PsCertificado4		VARCHAR(15),
PsProfesor5		VARCHAR(40),
PsNombramiento5		VARCHAR(15),
PsGrado5		VARCHAR(15),
PsAntiguedad5		INTEGER,
PsCursos5		VARCHAR(15),
PsCertificado5		VARCHAR(15),
PsProfesor6		VARCHAR(40),
PsNombramiento6		VARCHAR(15),
PsGrado6		VARCHAR(15),
PsAntiguedad6		INTEGER,
PsCursos6		VARCHAR(15),
PsCertificado6		VARCHAR(15),
PsProfesor7		VARCHAR(40),
PsNombramiento7		VARCHAR(15),
PsGrado7		VARCHAR(15),
PsAntiguedad7		INTEGER,
PsCursos7		VARCHAR(15),
PsCertificado7		VARCHAR(15),
PsProfesor8		VARCHAR(40),
PsNombramiento8		VARCHAR(15),
PsGrado8		VARCHAR(15),
PsAntiguedad8		INTEGER,
PsCursos8		VARCHAR(15),
PsCertificado8		VARCHAR(15),
PsProfesor9		VARCHAR(40),
PsNombramiento9		VARCHAR(15),
PsGrado9		VARCHAR(15),
PsAntiguedad9		INTEGER,
PsCursos9		VARCHAR(15),
PsCertificado9		VARCHAR(15),
PsProfesor0		VARCHAR(40),
PsNombramiento0		VARCHAR(15),
PsGrado0		VARCHAR(15),
PsAntiguedad0		INTEGER,
PsCursos0		VARCHAR(15),
PsCertificado0		VARCHAR(15),
PnIdFormulario1		INTEGER
)
RETURNS VOID
AS
'DECLARE VnIdFormulario1 INTEGER;
 DECLARE VnIdProfesor1	INTEGER;
BEGIN
	VnIdFormulario1 = PnIdFormulario1;
	VnIdProfesor1 = (SELECT min(nIdProfesor) FROM Profesores_Formulario1 WHERE nIdFormulario1 = VnIdFormulario1);

	UPDATE Profesores SET(sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad)
	=
	(PsProfesor1,PsNombramiento1,PsGrado1,PsAntiguedad1,PsCursos1,PsCertificado1)
	WHERE nIdProfesor = VnIdProfesor1;
	
	UPDATE Profesores SET(sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad)
	=
	(PsProfesor2,PsNombramiento2,PsGrado2,PsAntiguedad2,PsCursos2,PsCertificado2)
	WHERE nIdProfesor = VnIdProfesor1 + 1;

	UPDATE Profesores SET(sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad)
	=
	(PsProfesor3,PsNombramiento3,PsGrado3,PsAntiguedad3,PsCursos3,PsCertificado3)
	WHERE nIdProfesor = VnIdProfesor1 + 2;

	UPDATE Profesores SET(sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad)
	=
	(PsProfesor4,PsNombramiento4,PsGrado4,PsAntiguedad4,PsCursos4,PsCertificado4)
	WHERE nIdProfesor = VnIdProfesor1 + 3;

	UPDATE Profesores SET(sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad)
	=
	(PsProfesor5,PsNombramiento5,PsGrado5,PsAntiguedad5,PsCursos5,PsCertificado5)
	WHERE nIdProfesor = VnIdProfesor1 + 4;

	UPDATE Profesores SET(sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad)
	=
	(PsProfesor6,PsNombramiento6,PsGrado6,PsAntiguedad6,PsCursos6,PsCertificado6)
	WHERE nIdProfesor = VnIdProfesor1 + 5;
	
	UPDATE Profesores SET(sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad)
	=
	(PsProfesor7,PsNombramiento7,PsGrado7,PsAntiguedad7,PsCursos7,PsCertificado7)
	WHERE nIdProfesor = VnIdProfesor1 + 6;

	UPDATE Profesores SET(sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad)
	=
	(PsProfesor8,PsNombramiento8,PsGrado8,PsAntiguedad8,PsCursos8,PsCertificado8)
	WHERE nIdProfesor = VnIdProfesor1 + 7;

	UPDATE Profesores SET(sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad)
	=
	(PsProfesor9,PsNombramiento9,PsGrado9,PsAntiguedad9,PsCursos9,PsCertificado9)
	WHERE nIdProfesor = VnIdProfesor1 + 8;
	
	UPDATE Profesores SET(sNombre,sTipoProfesor,sGradoAcademico,nAntiguedad,sCursosDocencia,sCertificadoConsejoEspecialidad)
	=
	(PsProfesor0,PsNombramiento0,PsGrado0,PsAntiguedad0,PsCursos0,PsCertificado0)
	WHERE nIdProfesor = VnIdProfesor1 + 9;

END;
' LANGUAGE  'plpgsql';


-- Procedimiento que inserta los valores del Formulario2

CREATE OR REPLACE FUNCTION sp_ActualizaFormulario2(
PsNombreCo1				VARCHAR(80),
PsNombreCo2				VARCHAR(80),
PsNombreCo3				VARCHAR(80),
PsNombreCo4				VARCHAR(80),
PsNombreCo5				VARCHAR(80),
PsNombreCo6				VARCHAR(80),
PsNombreCo7				VARCHAR(80),
PsNombreCo8				VARCHAR(80),
PsNombreCo9				VARCHAR(80),
PsNombreCo0				VARCHAR(80),
PsNombreCFH1				VARCHAR(80),
PsNombreCFH2				VARCHAR(80),
PsNombreCFH3				VARCHAR(80),
PsNombreCFH4				VARCHAR(80),
PsNombreCFH5				VARCHAR(80),
PsNombreCFH6				VARCHAR(80),
PsNombreCFH7				VARCHAR(80),
PsNombreCFH8				VARCHAR(80),
PsNombreCFH9				VARCHAR(80),
PsNombreCFH0				VARCHAR(80),
PsNombreProcedimiento1			VARCHAR(80),
PsNombreProcedimiento2			VARCHAR(80),
PsNombreProcedimiento3			VARCHAR(80),
PsNombreProcedimiento4			VARCHAR(80),
PsNombreProcedimiento5			VARCHAR(80),
PsNombreProcedimiento6			VARCHAR(80),
PsNombreProcedimiento7			VARCHAR(80),
PsNombreProcedimiento8			VARCHAR(80),
PsNombreProcedimiento9			VARCHAR(80),
PsNombreProcedimiento0			VARCHAR(80),
PsComplicacion1				VARCHAR(80),
PsComplicacion2				VARCHAR(80),
PsComplicacion3				VARCHAR(80),
PsComplicacion4				VARCHAR(80),
PsComplicacion5				VARCHAR(80),
PsComplicacion6				VARCHAR(80),
PsComplicacion7				VARCHAR(80),
PsComplicacion8				VARCHAR(80),
PsComplicacion9				VARCHAR(80),
PsComplicacion0				VARCHAR(80),
PsExamenLab1				VARCHAR(80),
PsExamenLab2				VARCHAR(80),
PsExamenLab3				VARCHAR(80),
PsExamenLab4				VARCHAR(80),
PsExamenLab5				VARCHAR(80),
PsExamenLab6				VARCHAR(80),
PsExamenLab7				VARCHAR(80),
PsExamenLab8				VARCHAR(80),
PsExamenLab9				VARCHAR(80),
PsExamenLab0				VARCHAR(80),
PsGabinete1				VARCHAR(80),
PsGabinete2				VARCHAR(80),
PsGabinete3				VARCHAR(80),
PsGabinete4				VARCHAR(80),
PsGabinete5				VARCHAR(80),
PsGabinete6				VARCHAR(80),
PsGabinete7				VARCHAR(80),
PsGabinete8				VARCHAR(80),
PsGabinete9				VARCHAR(80),
PsGabinete0				VARCHAR(80),
PsIntervencionistas1			VARCHAR(80),
PsIntervencionistas2			VARCHAR(80),
PsIntervencionistas3			VARCHAR(80),
PsIntervencionistas4			VARCHAR(80),
PsIntervencionistas5			VARCHAR(80),
PsIntervencionistas6			VARCHAR(80),
PsIntervencionistas7			VARCHAR(80),
PsIntervencionistas8			VARCHAR(80),
PsIntervencionistas9			VARCHAR(80),
PsIntervencionistas0			VARCHAR(80),
PnPromedioMensualConsultasExternas	INTEGER,
PnAltasMejoriaCuracion			INTEGER,
PnAltasDefuncion			INTEGER,
PnPromedioMensualIntervenciones		INTEGER,
PnPromedioMensualPartosAtendidos	INTEGER,
PnAutopistas				INTEGER,
PnBiopsias				INTEGER,
PnCitologias				INTEGER,
PnIdFormulario2				INTEGER
)
RETURNS VOID
AS
'DECLARE VnIdPsNombreCo INTEGER;
BEGIN
	
	UPDATE Formulario2 SET(nPromedioMensualConsultasExternas,nAltasMejoriaCuracion,nAltasDefuncion,nPromedioMensualIntervenciones,nPromedioMensualPartosAtendidos,
				 nAutopistas,nBiopsias,nCitologias)
	= (PnPromedioMensualConsultasExternas,PnAltasMejoriaCuracion,PnAltasDefuncion,PnPromedioMensualIntervenciones,PnPromedioMensualPartosAtendidos,
		PnAutopistas,PnBiopsias,PnCitologias)
	WHERE nIdFormulario2 = PnIdFormulario2;

	VnIdPsNombreCo = (SELECT min(nIdTop10) FROM Tops10 WHERE nIdFormulario2 = PnIdFormulario2);
	
	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Consulta Externa'',PsNombreCo1)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Consulta Externa'',PsNombreCo2)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 1;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Consulta Externa'',PsNombreCo3)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 2;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Consulta Externa'',PsNombreCo4)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 3;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Consulta Externa'',PsNombreCo5)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 4;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Consulta Externa'',PsNombreCo6)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 5;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Consulta Externa'',PsNombreCo7)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 6;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Consulta Externa'',PsNombreCo8)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 7;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Consulta Externa'',PsNombreCo9)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 8;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Consulta Externa'',PsNombreCo0)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 9;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Causa Hospitalizacion'',PsNombreCFH1)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 10;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Causa Hospitalizacion'',PsNombreCFH2)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 11;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Causa Hospitalizacion'',PsNombreCFH3)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 12;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Causa Hospitalizacion'',PsNombreCFH4)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 13;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Causa Hospitalizacion'',PsNombreCFH5)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 14;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Causa Hospitalizacion'',PsNombreCFH6)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 15;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Causa Hospitalizacion'',PsNombreCFH7)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 16;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Causa Hospitalizacion'',PsNombreCFH8)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 17;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Causa Hospitalizacion'',PsNombreCFH9)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 18;	

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Causa Hospitalizacion'',PsNombreCFH0)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 19;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Quirúrgico'',PsNombreProcedimiento1)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 20;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Quirúrgico'',PsNombreProcedimiento2)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 21;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Quirúrgico'',PsNombreProcedimiento3)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 22;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Quirúrgico'',PsNombreProcedimiento4)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 23;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Quirúrgico'',PsNombreProcedimiento5)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 24;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Quirúrgico'',PsNombreProcedimiento6)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 25;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Quirúrgico'',PsNombreProcedimiento7)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 26;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Quirúrgico'',PsNombreProcedimiento8)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 27;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Quirúrgico'',PsNombreProcedimiento9)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 28;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Quirúrgico'',PsNombreProcedimiento0)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 29;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Complicación Hospitalaria'',PsComplicacion1)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 30;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Complicación Hospitalaria'',PsComplicacion2)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 31;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Complicación Hospitalaria'',PsComplicacion3)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 32;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Complicación Hospitalaria'',PsComplicacion4)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 33;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Complicación Hospitalaria'',PsComplicacion5)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 34;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Complicación Hospitalaria'',PsComplicacion6)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 35;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Complicación Hospitalaria'',PsComplicacion7)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 36;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Complicación Hospitalaria'',PsComplicacion8)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 37;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Complicación Hospitalaria'',PsComplicacion9)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 38;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Complicación Hospitalaria'',PsComplicacion0)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 39;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Examen Laboratorio'',PsExamenLab1)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 40;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Examen Laboratorio'',PsExamenLab2)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 41;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Examen Laboratorio'',PsExamenLab3)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 42;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Examen Laboratorio'',PsExamenLab4)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 43;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Examen Laboratorio'',PsExamenLab5)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 44;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Examen Laboratorio'',PsExamenLab6)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 45;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Examen Laboratorio'',PsExamenLab7)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 46;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Examen Laboratorio'',PsExamenLab8)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 47;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Examen Laboratorio'',PsExamenLab9)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 48;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Examen Laboratorio'',PsExamenLab0)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 49;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Estudios de Gabinete'',PsGabinete1)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 50;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Estudios de Gabinete'',PsGabinete2)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 51;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Estudios de Gabinete'',PsGabinete3)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 52;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Estudios de Gabinete'',PsGabinete4)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 53;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Estudios de Gabinete'',PsGabinete5)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 54;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Estudios de Gabinete'',PsGabinete6)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 55;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Estudios de Gabinete'',PsGabinete7)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 56;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Estudios de Gabinete'',PsGabinete8)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 57;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Estudios de Gabinete'',PsGabinete9)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 58;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Estudios de Gabinete'',PsGabinete0)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 59;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Intervencionista'',PsIntervencionistas1)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 60;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Intervencionista'',PsIntervencionistas2)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 61;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Intervencionista'',PsIntervencionistas3)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 62;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Intervencionista'',PsIntervencionistas4)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 63;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Intervencionista'',PsIntervencionistas5)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 64;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Intervencionista'',PsIntervencionistas6)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 65;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Intervencionista'',PsIntervencionistas7)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 66;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Intervencionista'',PsIntervencionistas8)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 67;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Intervencionista'',PsIntervencionistas9)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 68;

	UPDATE Tops10 SET(sTipo,sNombreCoChPComElabEgPi)
	= (''Procedimiento Intervencionista'',PsIntervencionistas0)
	WHERE nIdFormulario2 = PnIdFormulario2 AND nIdTop10 = VnIdPsNombreCo + 69;
END;
' LANGUAGE  'plpgsql';


-- Procedimiento que inserta los valores del Formulario3
CREATE OR REPLACE FUNCTION sp_ActualizaFormulario3(
PsPromedioMinimo			VARCHAR(10),
PnEspecificarPromedioMinimo		INTEGER,
PsExamenNacionalResidencias		VARCHAR(10),
PsExamenCompetenciaAcademicaUNAM	VARCHAR(10),
PsExamenTeoricoConocimientos		VARCHAR(10),
PsResidenciaRotatoria			VARCHAR(10),
PsExamenPsicometrico			VARCHAR(10),
PsExamenIngles				VARCHAR(10),
PsExamenPracticoDestrezas		VARCHAR(10),
PsExamenSaludFisica			VARCHAR(10),
PsEntrevistaPersonal			VARCHAR(10),
PsAntecedentesInstitucionSalud		VARCHAR(10),
PsEdadMaxima				VARCHAR(10),
PnEspecificacionEdad			INTEGER,
PsEstudiosPreviosOtraEspecialidad	VARCHAR(10),
PsOtroCriterioAdmision			VARCHAR(10),
PsEspecificarCriterioAdmision		VARCHAR(512),
PnDuracionCurso				INTEGER,
PsEstudiosPreviosOtraEspecialidadMedica	VARCHAR(10),
PnDuracionOtraEspecialidad		INTEGER,
PsEspecificacionOtraEspecialidad	VARCHAR(512),
PsResidenciaSoloUnidad			VARCHAR(10),
PsUnidadesComplementarias		VARCHAR(512),
PsPorObjetivos				VARCHAR(10),
PsProgramaOperativo			VARCHAR(10),
PsListadoTemas				VARCHAR(10),
PsCartaDescriptiva			VARCHAR(10),
PsProgramaRotacion			VARCHAR(10),
PsModular				VARCHAR(10),
PsAsignaturaMaterias			VARCHAR(10),
PsPorAnos				VARCHAR(10),
PsPorSemestres				VARCHAR(10),
PsOtraCaracteristica			VARCHAR(10),
PsEspecificacionOtras			VARCHAR(512),
PsAlumnosResidenciasFormales		VARCHAR(10),
PnActividadesTeoricasGrupo		INTEGER,
PnActividadesTeoricasIndependientes	INTEGER,
PnPracticaClinicaIndependiente		INTEGER,
PnPracticaClinicaTutoria		INTEGER,
PnActividadesInvestigacion		INTEGER,
PnActualizacion				INTEGER,
PnAplicacion				INTEGER,
PnGeneracion				INTEGER,
PnDesarrolloAutonomia			INTEGER,
PnDesarrolloCapacidades			INTEGER,
PsSituacionesDesarrolloDestrezas	VARCHAR(15),
PsSituacionesGraduacionDestrezas	VARCHAR(15),
PsEnsenanzaDestrezasResidentes		VARCHAR(15),
PsEnsenanzaDestrezasProfesores		VARCHAR(15),
PsSupervisionDominio			VARCHAR(15),
PsProgramanActividades			VARCHAR(15),
PsExamenTeoricoOral			VARCHAR(45),
PsPeriodicidadExamenTeoricoOral		VARCHAR(45),
PsExamenTeoricoEscrito			VARCHAR(45),
PsPeriodicidadExamenTeoricoEscrito	VARCHAR(45),
PsExamenPractico			VARCHAR(45),
PsPeriodicidadExamenPractico		VARCHAR(45),
PsListasCotejo				VARCHAR(10),
PsObservacionLibre			VARCHAR(10),
PsGuiaObservacion			VARCHAR(10),
PsEscalasEvaluativas			VARCHAR(10),
PsOtroProcedimiento			VARCHAR(10),
PsEspecificarOtroProcedimiento		VARCHAR(512),
PsRetroalimentacion			VARCHAR(45),
PsPeriodicidadProgramaOperativo		VARCHAR(45),
PsAlumnosEnDepartamentales		VARCHAR(10),
PnProcentajeDepartamental		INTEGER,
PnSeminarioAtencionMedica		INTEGER,
PnTrabajoAtencionMedica			INTEGER,
PnSeminarioInvestigacion		INTEGER,
PnSeminarioEducacion			INTEGER,
PsDificultades				VARCHAR(10),
PsEspecificacionDificultades		VARCHAR(512),
PsPercepcionEstres			VARCHAR(45),
PsComentariosPercepcionesEstres		VARCHAR(512),
PnIdFormulario3				INTEGER
)
RETURNS VOID
AS
'
BEGIN
	UPDATE Formulario3 SET(sPromedioMinimo,nEspecificarPromedioMinimo,sExamenNacionalResidencias,sExamenCompetenciaAcademicaUNAM,sExamenTeoricoConocimientos,
				sResidenciaRotatoria,sExamenPsicometrico,sExamenIngles,sExamenPracticoDestrezas,sExamenSaludFisica,sEntrevistaPersonal,
				sAntecedentesInstitucionSalud,sEdadMaxima,nEspecificacionEdad,sEstudiosPreviosOtraEspecialidad,sOtroCriterioAdmision,
				sEspecificarCriterioAdmision,nDuracionCurso,sEstudiosPreviosOtraEspecialidadMedica,nDuracionOtraEspecialidad,sEspecificacionOtraEspecialidad,
				sResidenciaSoloUnidad,sUnidadesComplementarias,sPorObjetivos,sProgramaOperativo,sListadoTemas,sCartaDescriptiva,sProgramaRotacion,
				sModular,sAsignaturaMaterias,sPorAnos,sPorSemestres,sOtraCaracteristica,sEspecificacionOtras,sAlumnosResidenciasFormales,
				nActividadesTeoricasGrupo,nActividadesTeoricasIndependientes,nPracticaClinicaIndependiente,nPracticaClinicaTutoria,
				nActividadesInvestigacion,nActualizacion,nAplicacion,nGeneracion,nDesarrolloAutonomia,nDesarrolloCapacidades,sSituacionesDesarrolloDestrezas,
				sSituacionesGraduacionDestrezas,sEnsenanzaDestrezasResidentes,sEnsenanzaDestrezasProfesores,sSupervisionDominio,sProgramanActividades,
				sExamenTeoricoOral,sPeriodicidadExamenTeoricoOral,sExamenTeoricoEscrito,sPeriodicidadExamenTeoricoEscrito,sExamenPractico,
				sPeriodicidadExamenPractico,sListasCotejo,sObservacionLibre,sGuiaObservacion,sEscalasEvaluativas,sOtroProcedimiento,
				sEspecificarOtroProcedimiento,sRetroalimentacion,sPeriodicidadProgramaOperativo,sAlumnosEnDepartamentales,nProcentajeDepartamental,
				nSeminarioAtencionMedica,nTrabajoAtencionMedica,nSeminarioInvestigacion,nSeminarioEducacion,sDificultades,sEspecificacionDificultades,
				sPercepcionEstres,sComentariosPercepcionesEstres)
	=
	(PsPromedioMinimo,PnEspecificarPromedioMinimo,PsExamenNacionalResidencias,PsExamenCompetenciaAcademicaUNAM,PsExamenTeoricoConocimientos,PsResidenciaRotatoria,
	 PsExamenPsicometrico,PsExamenIngles,PsExamenPracticoDestrezas,PsExamenSaludFisica,PsEntrevistaPersonal,PsAntecedentesInstitucionSalud,PsEdadMaxima,
	 PnEspecificacionEdad,PsEstudiosPreviosOtraEspecialidad,PsOtroCriterioAdmision,PsEspecificarCriterioAdmision,PnDuracionCurso,PsEstudiosPreviosOtraEspecialidadMedica,
	 PnDuracionOtraEspecialidad,PsEspecificacionOtraEspecialidad,PsResidenciaSoloUnidad,PsUnidadesComplementarias,PsPorObjetivos,PsProgramaOperativo,
	 PsListadoTemas,PsCartaDescriptiva,PsProgramaRotacion,PsModular,PsAsignaturaMaterias,PsPorAnos,PsPorSemestres,PsOtraCaracteristica,PsEspecificacionOtras,
	 PsAlumnosResidenciasFormales,PnActividadesTeoricasGrupo,PnActividadesTeoricasIndependientes,PnPracticaClinicaIndependiente,PnPracticaClinicaTutoria,
	 PnActividadesInvestigacion,PnActualizacion,PnAplicacion,PnGeneracion,PnDesarrolloAutonomia,PnDesarrolloCapacidades,PsSituacionesDesarrolloDestrezas,
	 PsSituacionesGraduacionDestrezas,PsEnsenanzaDestrezasResidentes,PsEnsenanzaDestrezasProfesores,PsSupervisionDominio,PsProgramanActividades,PsExamenTeoricoOral,
	 PsPeriodicidadExamenTeoricoOral,PsExamenTeoricoEscrito,PsPeriodicidadExamenTeoricoEscrito,PsExamenPractico,PsPeriodicidadExamenPractico,PsListasCotejo,
	 PsObservacionLibre,PsGuiaObservacion,PsEscalasEvaluativas,PsOtroProcedimiento,PsEspecificarOtroProcedimiento,PsRetroalimentacion,PsPeriodicidadProgramaOperativo,
	 PsAlumnosEnDepartamentales,PnProcentajeDepartamental,PnSeminarioAtencionMedica,PnTrabajoAtencionMedica,PnSeminarioInvestigacion,PnSeminarioEducacion,
	 PsDificultades,PsEspecificacionDificultades,PsPercepcionEstres,PsComentariosPercepcionesEstres)
	 WHERE nIdFormulario3 = PnIdFormulario3;
	 
END;
' LANGUAGE  'plpgsql';


-- Prodecimiento auxiliar que inserta datos del Formulario3

CREATE OR REPLACE FUNCTION sp_ActualizaAuxiliar1Formulario3(
PsAreaRotacionPropia1			VARCHAR(40),
PnTiempoAreaRotacionPropia1		INTEGER,
PsAreaRotacionPropia2			VARCHAR(40),
PnTiempoAreaRotacionPropia2		INTEGER,
PsAreaRotacionPropia3			VARCHAR(40),
PnTiempoAreaRotacionPropia3		INTEGER,
PsAreaRotacionPropia4			VARCHAR(40),
PnTiempoAreaRotacionPropia4		INTEGER,
PsAreaRotacionPropia5			VARCHAR(40),
PnTiempoAreaRotacionPropia5		INTEGER,
PsAreaRotacionPropia6			VARCHAR(40),
PnTiempoAreaRotacionPropia6		INTEGER,
PsAreaRotacionPropia7			VARCHAR(40),
PnTiempoAreaRotacionPropia7		INTEGER,
PsAreaRotacionPropia8			VARCHAR(40),
PnTiempoAreaRotacionPropia8		INTEGER,
PsAreaRotacionPropia9			VARCHAR(40),
PnTiempoAreaRotacionPropia9		INTEGER,
PsAreaRotacionPropia0			VARCHAR(40),
PnTiempoAreaRotacionPropia0		INTEGER,
PsAreaRotacionComplementaria1		VARCHAR(40),
PnTiempoAreaRotacionComplementaria1	INTEGER,
PsAreaRotacionComplementaria2		VARCHAR(40),
PnTiempoAreaRotacionComplementaria2	INTEGER,
PsAreaRotacionComplementaria3		VARCHAR(40),
PnTiempoAreaRotacionComplementaria3	INTEGER,
PsAreaRotacionComplementaria4		VARCHAR(40),
PnTiempoAreaRotacionComplementaria4	INTEGER,
PsAreaRotacionComplementaria5		VARCHAR(40),
PnTiempoAreaRotacionComplementaria5	INTEGER,
PsAreaRotacionComplementaria6		VARCHAR(40),
PnTiempoAreaRotacionComplementaria6	INTEGER,
PsAreaRotacionComplementaria7		VARCHAR(40),
PnTiempoAreaRotacionComplementaria7	INTEGER,
PsAreaRotacionComplementaria8		VARCHAR(40),
PnTiempoAreaRotacionComplementaria8	INTEGER,
PsAreaRotacionComplementaria9		VARCHAR(40),
PnTiempoAreaRotacionComplementaria9	INTEGER,
PsAreaRotacionComplementaria0		VARCHAR(40),
PnTiempoAreaRotacionComplementaria0	INTEGER,
PsSubsede1				VARCHAR(40),
PnTiempoSubsede1			INTEGER,
PsSubsede2				VARCHAR(40),
PnTiempoSubsede2			INTEGER,
PsSubsede3				VARCHAR(40),
PnTiempoSubsede3			INTEGER,
PsSubsede4				VARCHAR(40),
PnTiempoSubsede4			INTEGER,
PsSubsede5				VARCHAR(40),
PnTiempoSubsede5			INTEGER,
PsSubsede6				VARCHAR(40),
PnTiempoSubsede6			INTEGER,
PsSubsede7				VARCHAR(40),
PnTiempoSubsede7			INTEGER,
PsSubsede8				VARCHAR(40),
PnTiempoSubsede8			INTEGER,
PsSubsede9				VARCHAR(40),
PnTiempoSubsede9			INTEGER,
PsSubsede0				VARCHAR(40),
PnTiempoSubsede0			INTEGER,
PnExternoR1				INTEGER,
PnExternoR2				INTEGER,
PnExternoR3				INTEGER,
PnExternoR4				INTEGER,
PnExternoR5				INTEGER,
PnExternoR6				INTEGER,
PnOtrosExternos				INTEGER,
PnIdFormulario3				INTEGER
)
RETURNS VOID
AS
'DECLARE VnIdFormulario3 	  	INTEGER;
 DECLARE VnIdSubsede 	 	  	INTEGER;
 DECLARE VnIdAlumnosExternosCursos	INTEGER;
BEGIN
	VnIdFormulario3 = (SELECT min(nIdAreaRotacion) FROM  AreasParaRotacionResidentes  WHERE nIdFormulario3 = PnIdFormulario3);

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Propia de la Especialidad'',PsAreaRotacionPropia1,PnTiempoAreaRotacionPropia1)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Propia de la Especialidad'',PsAreaRotacionPropia2,PnTiempoAreaRotacionPropia2)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 1;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Propia de la Especialidad'',PsAreaRotacionPropia3,PnTiempoAreaRotacionPropia3)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 2;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Propia de la Especialidad'',PsAreaRotacionPropia4,PnTiempoAreaRotacionPropia4)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 3;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Propia de la Especialidad'',PsAreaRotacionPropia5,PnTiempoAreaRotacionPropia5)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 4;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Propia de la Especialidad'',PsAreaRotacionPropia6,PnTiempoAreaRotacionPropia6)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 5;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Propia de la Especialidad'',PsAreaRotacionPropia7,PnTiempoAreaRotacionPropia7)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 6;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Propia de la Especialidad'',PsAreaRotacionPropia8,PnTiempoAreaRotacionPropia8)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 7;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Propia de la Especialidad'',PsAreaRotacionPropia9,PnTiempoAreaRotacionPropia9)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 8;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Propia de la Especialidad'',PsAreaRotacionPropia0,PnTiempoAreaRotacionPropia0)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 9;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Complementaria'',PsAreaRotacionComplementaria1,PnTiempoAreaRotacionComplementaria1)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 10;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Complementaria'',PsAreaRotacionComplementaria2,PnTiempoAreaRotacionComplementaria2)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 11;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Complementaria'',PsAreaRotacionComplementaria3,PnTiempoAreaRotacionComplementaria3)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 12;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Complementaria'',PsAreaRotacionComplementaria4,PnTiempoAreaRotacionComplementaria4)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 13;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Complementaria'',PsAreaRotacionComplementaria5,PnTiempoAreaRotacionComplementaria5)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 14;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Complementaria'',PsAreaRotacionComplementaria6,PnTiempoAreaRotacionComplementaria6)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 +  15;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Complementaria'',PsAreaRotacionComplementaria7,PnTiempoAreaRotacionComplementaria7)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 16;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Complementaria'',PsAreaRotacionComplementaria8,PnTiempoAreaRotacionComplementaria8)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 17;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Complementaria'',PsAreaRotacionComplementaria9,PnTiempoAreaRotacionComplementaria9)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 18;

	UPDATE AreasParaRotacionResidentes SET(sTipoArea,sAreaRotacion,nTiempoAreaRotacion)
	= (''Rotación Complementaria'',PsAreaRotacionComplementaria0,PnTiempoAreaRotacionComplementaria0)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAreaRotacion = VnIdFormulario3 + 19;

	VnIdSubsede = (SELECT min(nIdSubsede) FROM SubsedesRotacionResidentes WHERE nIdFormulario3 = PnIdFormulario3);

	UPDATE SubsedesRotacionResidentes SET(sSubsede,nTiempoSubsede)
	= (PsSubsede1,PnTiempoSubsede1)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdSubsede = VnIdSubsede;

	UPDATE SubsedesRotacionResidentes SET(sSubsede,nTiempoSubsede)
	= (PsSubsede2,PnTiempoSubsede2)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdSubsede = VnIdSubsede + 1;

	UPDATE SubsedesRotacionResidentes SET(sSubsede,nTiempoSubsede)
	= (PsSubsede3,PnTiempoSubsede3)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdSubsede = VnIdSubsede + 2;

	UPDATE SubsedesRotacionResidentes SET(sSubsede,nTiempoSubsede)
	= (PsSubsede4,PnTiempoSubsede4)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdSubsede = VnIdSubsede + 3;

	UPDATE SubsedesRotacionResidentes SET(sSubsede,nTiempoSubsede)
	= (PsSubsede5,PnTiempoSubsede5)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdSubsede = VnIdSubsede + 4;

	UPDATE SubsedesRotacionResidentes SET(sSubsede,nTiempoSubsede)
	= (PsSubsede6,PnTiempoSubsede6)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdSubsede = VnIdSubsede +  5;

	UPDATE SubsedesRotacionResidentes SET(sSubsede,nTiempoSubsede)
	= (PsSubsede7,PnTiempoSubsede7)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdSubsede = VnIdSubsede +  6;

	UPDATE SubsedesRotacionResidentes SET(sSubsede,nTiempoSubsede)
	= (PsSubsede8,PnTiempoSubsede8)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdSubsede = VnIdSubsede +  7;

	UPDATE SubsedesRotacionResidentes SET(sSubsede,nTiempoSubsede)
	= (PsSubsede9,PnTiempoSubsede9)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdSubsede = VnIdSubsede +  8;

	UPDATE SubsedesRotacionResidentes SET(sSubsede,nTiempoSubsede)
	= (PsSubsede0,PnTiempoSubsede0)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdSubsede = VnIdSubsede + 9;

	VnIdAlumnosExternosCursos = (SELECT (nIdAlumnosExternosCursos) FROM AlumnosExternosCursos WHERE nIdFormulario3 = PnIdFormulario3);

	UPDATE AlumnosExternosCursos SET(nExternoR1,nExternoR2,nExternoR3,nExternoR4,nExternoR5,nExternoR6,nOtrosExternos)
	= (PnExternoR1,PnExternoR2,PnExternoR3,PnExternoR4,PnExternoR5,PnExternoR6,PnOtrosExternos)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdAlumnosExternosCursos = VnIdAlumnosExternosCursos;

END;
' LANGUAGE  'plpgsql';


-- Prodecimiento auxiliar que inserta datos del Formulario3

CREATE OR REPLACE FUNCTION sp_ActualizaAuxiliar2Formulario3(
PsNombreR1				VARCHAR(256),
PsNombreTrabajoInvestigacionR1		VARCHAR(256),
PsPublicadoR1				VARCHAR(10),
PsReferenciaR1				VARCHAR(256),
PsNombreR2				VARCHAR(256),
PsNombreTrabajoInvestigacionR2		VARCHAR(256),
PsPublicadoR2				VARCHAR(10),
PsReferenciaR2				VARCHAR(256),
PsNombreR3				VARCHAR(256),
PsNombreTrabajoInvestigacionR3		VARCHAR(256),
PsPublicadoR3				VARCHAR(10),
PsReferenciaR3				VARCHAR(256),
PsNombreR4				VARCHAR(256),
PsNombreTrabajoInvestigacionR4		VARCHAR(256),
PsPublicadoR4				VARCHAR(10),
PsReferenciaR4				VARCHAR(256),
PsNombreR5				VARCHAR(256),
PsNombreTrabajoInvestigacionR5		VARCHAR(256),
PsPublicadoR5				VARCHAR(10),
PsReferenciaR5				VARCHAR(256),
PsNombreR6				VARCHAR(256),
PsNombreTrabajoInvestigacionR6		VARCHAR(256),
PsPublicadoR6				VARCHAR(10),
PsReferenciaR6				VARCHAR(256),
PsNombreR7				VARCHAR(256),
PsNombreTrabajoInvestigacionR7		VARCHAR(256),
PsPublicadoR7				VARCHAR(10),
PsReferenciaR7				VARCHAR(256),
PsNombreR8				VARCHAR(256),
PsNombreTrabajoInvestigacionR8		VARCHAR(256),
PsPublicadoR8				VARCHAR(10),
PsReferenciaR8				VARCHAR(256),
PsNombreR9				VARCHAR(256),
PsNombreTrabajoInvestigacionR9		VARCHAR(256),
PsPublicadoR9				VARCHAR(10),
PsReferenciaR9				VARCHAR(256),
PsNombreR0				VARCHAR(256),
PsNombreTrabajoInvestigacionR0		VARCHAR(256),
PsPublicadoR0				VARCHAR(10),
PsReferenciaR0				VARCHAR(256),
PsNombreP1				VARCHAR(256),
PsNombreTrabajoInvestigacionP1		VARCHAR(256),
PsPublicadoP1				VARCHAR(10),
PsReferenciaP1				VARCHAR(256),
PsNombreP2				VARCHAR(256),
PsNombreTrabajoInvestigacionP2		VARCHAR(256),
PsPublicadoP2				VARCHAR(10),
PsReferenciaP2				VARCHAR(256),
PsNombreP3				VARCHAR(256),
PsNombreTrabajoInvestigacionP3		VARCHAR(256),
PsPublicadoP3				VARCHAR(10),
PsReferenciaP3				VARCHAR(256),
PsNombreP4				VARCHAR(256),
PsNombreTrabajoInvestigacionP4		VARCHAR(256),
PsPublicadoP4				VARCHAR(10),
PsReferenciaP4				VARCHAR(256),
PsNombreP5				VARCHAR(256),
PsNombreTrabajoInvestigacionP5		VARCHAR(256),
PsPublicadoP5				VARCHAR(10),
PsReferenciaP5				VARCHAR(256),
PsNombreP6				VARCHAR(256),
PsNombreTrabajoInvestigacionP6		VARCHAR(256),
PsPublicadoP6				VARCHAR(10),
PsReferenciaP6				VARCHAR(256),
PsNombreP7				VARCHAR(256),
PsNombreTrabajoInvestigacionP7		VARCHAR(256),
PsPublicadoP7				VARCHAR(10),
PsReferenciaP7				VARCHAR(256),
PsNombreP8				VARCHAR(256),
PsNombreTrabajoInvestigacionP8		VARCHAR(256),
PsPublicadoP8				VARCHAR(10),
PsReferenciaP8				VARCHAR(256),
PsNombreP9				VARCHAR(256),
PsNombreTrabajoInvestigacionP9		VARCHAR(256),
PsPublicadoP9				VARCHAR(10),
PsReferenciaP9				VARCHAR(256),
PsNombreP0				VARCHAR(256),
PsNombreTrabajoInvestigacionP0		VARCHAR(256),
PsPublicadoP0				VARCHAR(10),
PsReferenciaP0				VARCHAR(256),
PnIdFormulario3				INTEGER
)
RETURNS VOID
AS
'DECLARE VnIdFormulario3 INTEGER;
BEGIN

	VnIdFormulario3 = (SELECT min(nIdTrabajoInvestigacion) FROM TrabajosInvestigacion WHERE nIdFormulario3 = PnIdFormulario3);

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Residente'',PsNombreR1,PsNombreTrabajoInvestigacionR1,PsPublicadoR1,PsReferenciaR1)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Residente'',PsNombreR2,PsNombreTrabajoInvestigacionR2,PsPublicadoR2,PsReferenciaR2)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 1;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Residente'',PsNombreR3,PsNombreTrabajoInvestigacionR3,PsPublicadoR3,PsReferenciaR3)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 2;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Residente'',PsNombreR4,PsNombreTrabajoInvestigacionR4,PsPublicadoR4,PsReferenciaR4)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 3;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Residente'',PsNombreR5,PsNombreTrabajoInvestigacionR5,PsPublicadoR5,PsReferenciaR5)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 4;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Residente'',PsNombreR6,PsNombreTrabajoInvestigacionR6,PsPublicadoR6,PsReferenciaR6)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 5;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Residente'',PsNombreR7,PsNombreTrabajoInvestigacionR7,PsPublicadoR7,PsReferenciaR7)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 6;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Residente'',PsNombreR8,PsNombreTrabajoInvestigacionR8,PsPublicadoR8,PsReferenciaR8)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 7;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Residente'',PsNombreR9,PsNombreTrabajoInvestigacionR9,PsPublicadoR9,PsReferenciaR9)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 8;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Residente'',PsNombreR0,PsNombreTrabajoInvestigacionR0,PsPublicadoR0,PsReferenciaR0)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 9;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Profesor'',PsNombreP1,PsNombreTrabajoInvestigacionP1,PsPublicadoP1,PsReferenciaP1)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 10;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Profesor'',PsNombreP2,PsNombreTrabajoInvestigacionP2,PsPublicadoP2,PsReferenciaP2)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 11;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Profesor'',PsNombreP3,PsNombreTrabajoInvestigacionP3,PsPublicadoP3,PsReferenciaP3)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 12;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Profesor'',PsNombreP4,PsNombreTrabajoInvestigacionP4,PsPublicadoP4,PsReferenciaP4)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 13;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Profesor'',PsNombreP5,PsNombreTrabajoInvestigacionP5,PsPublicadoP5,PsReferenciaP5)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 14;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Profesor'',PsNombreP6,PsNombreTrabajoInvestigacionP6,PsPublicadoP6,PsReferenciaP6)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 15;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Profesor'',PsNombreP7,PsNombreTrabajoInvestigacionP7,PsPublicadoP7,PsReferenciaP7)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 16;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Profesor'',PsNombreP8,PsNombreTrabajoInvestigacionP8,PsPublicadoP8,PsReferenciaP8)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 17;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Profesor'',PsNombreP9,PsNombreTrabajoInvestigacionP9,PsPublicadoP9,PsReferenciaP9)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 18;

	UPDATE TrabajosInvestigacion SET(sTipo,sNombre,sNombreTrabajoInvestigacion,sPublicado,sReferencia)
	= (''Profesor'',PsNombreP0,PsNombreTrabajoInvestigacionP0,PsPublicadoP0,PsReferenciaP0)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdTrabajoInvestigacion = VnIdFormulario3 + 19;
END;
' LANGUAGE  'plpgsql';


-- Procedimiento auxiliar que inserta los valores del Formulario3

CREATE OR REPLACE FUNCTION sp_ActualizaAuxiliar3Formulario3(
sNombreParticipacionProfesor1	VARCHAR(80),
sEvento1			VARCHAR(80),
sNombreParticipacionProfesor2	VARCHAR(80),
sEvento2			VARCHAR(80),
sNombreParticipacionProfesor3	VARCHAR(80),
sEvento3			VARCHAR(80),
sNombreParticipacionProfesor4	VARCHAR(80),
sEvento4			VARCHAR(80),
sNombreParticipacionProfesor5	VARCHAR(80),
sEvento5			VARCHAR(80),
sNombreParticipacionProfesor6	VARCHAR(80),
sEvento6			VARCHAR(80),
sNombreParticipacionProfesor7	VARCHAR(80),
sEvento7			VARCHAR(80),
sNombreParticipacionProfesor8	VARCHAR(80),
sEvento8			VARCHAR(80),
sNombreParticipacionProfesor9	VARCHAR(80),
sEvento9			VARCHAR(80),
sNombreParticipacionProfesor0	VARCHAR(80),
sEvento0			VARCHAR(80),
PnIdFormulario3			INTEGER
)
RETURNS VOID
AS
'DECLARE VnIdFormulario3 INTEGER;
BEGIN

	VnIdFormulario3 = (SELECT min(nIdParticipacionProfesor) FROM ParticipacionProfesores WHERE nIdFormulario3 = PnIdFormulario3);

	UPDATE ParticipacionProfesores SET(sNombreParticipacionProfesor,sEvento)
	= (sNombreParticipacionProfesor1,sEvento1)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdParticipacionProfesor = VnIdFormulario3;

	UPDATE ParticipacionProfesores SET(sNombreParticipacionProfesor,sEvento)
	= (sNombreParticipacionProfesor2,sEvento2)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdParticipacionProfesor = VnIdFormulario3 + 1;

	UPDATE ParticipacionProfesores SET(sNombreParticipacionProfesor,sEvento)
	= (sNombreParticipacionProfesor3,sEvento3)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdParticipacionProfesor = VnIdFormulario3 + 2;

	UPDATE ParticipacionProfesores SET(sNombreParticipacionProfesor,sEvento)
	= (sNombreParticipacionProfesor4,sEvento4)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdParticipacionProfesor = VnIdFormulario3 + 3;

	UPDATE ParticipacionProfesores SET(sNombreParticipacionProfesor,sEvento)
	= (sNombreParticipacionProfesor5,sEvento5)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdParticipacionProfesor = VnIdFormulario3 + 4;

	UPDATE ParticipacionProfesores SET(sNombreParticipacionProfesor,sEvento)
	= (sNombreParticipacionProfesor6,sEvento6)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdParticipacionProfesor = VnIdFormulario3 + 5;

	UPDATE ParticipacionProfesores SET(sNombreParticipacionProfesor,sEvento)
	= (sNombreParticipacionProfesor7,sEvento7)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdParticipacionProfesor = VnIdFormulario3 + 6;

	UPDATE ParticipacionProfesores SET(sNombreParticipacionProfesor,sEvento)
	= (sNombreParticipacionProfesor8,sEvento8)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdParticipacionProfesor = VnIdFormulario3 + 7;

	UPDATE ParticipacionProfesores SET(sNombreParticipacionProfesor,sEvento)
	= (sNombreParticipacionProfesor9,sEvento9)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdParticipacionProfesor = VnIdFormulario3 + 8;

	UPDATE ParticipacionProfesores SET(sNombreParticipacionProfesor,sEvento)
	= (sNombreParticipacionProfesor0,sEvento0)
	WHERE nIdFormulario3 = PnIdFormulario3 AND nIdParticipacionProfesor = VnIdFormulario3 + 9;
	
END;
' LANGUAGE  'plpgsql';

-- Procedimiento que inserta los valores del Formulario4

CREATE OR REPLACE FUNCTION sp_ActualizaFormulario4(
PnTeoriaR1		INTEGER,
PnTeoriaR2		INTEGER,
PnTeoriaR3		INTEGER,
PnTeoriaR4		INTEGER,
PnTeoriaR5		INTEGER,
PnTeoriaR6		INTEGER,
PnTeoriaOtros		INTEGER,
PnPracticaSupR1		INTEGER,
PnPracticaSupR2		INTEGER,
PnPracticaSupR3		INTEGER,
PnPracticaSupR4		INTEGER,
PnPracticaSupR5		INTEGER,
PnPracticaSupR6		INTEGER,
PnPracticaSupOtros	INTEGER,
PnPracticaSinR1		INTEGER,
PnPracticaSinR2		INTEGER,
PnPracticaSinR3		INTEGER,
PnPracticaSinR4		INTEGER,
PnPracticaSinR5		INTEGER,
PnPracticaSinR6		INTEGER,
PnPracticaSinOtros	INTEGER,
PsTutor			VARCHAR(15),
PnConferencias		INTEGER,
PnSesion		INTEGER,
PnSeminario		INTEGER,
PnMesas			INTEGER,
PnBiblio		INTEGER,
PnTalleres		INTEGER,
PnOtrasActiv		INTEGER,
PnGuardiasCSupR1	INTEGER,
PnGuardiasCSupR2	INTEGER,
PnGuardiasCSupR3	INTEGER,
PnGuardiasCSupR4	INTEGER,
PnGuardiasCSupR5	INTEGER,
PnGuardiasCSupR6	INTEGER,
PnGuardiasCSupOtros	INTEGER,
PnGuardiasSSupR1	INTEGER,
PnGuardiasSSupR2	INTEGER,
PnGuardiasSSupR3	INTEGER,
PnGuardiasSSupR4	INTEGER,
PnGuardiasSSupR5	INTEGER,
PnGuardiasSSupR6	INTEGER,
PnGuardiasSSupOtros	INTEGER,
PsAreasDes		VARCHAR(15),
PsSanitProp		VARCHAR(15),
PsCondicAreasDes	VARCHAR(15),
PsConocPrevios		VARCHAR(15),
PsAprendizaje		VARCHAR(15),
PsComentariosAp		VARCHAR(512),
PnIdFormulario4		INTEGER
)
RETURNS VOID
AS
'DECLARE VnIdFormulario4 INTEGER;
BEGIN
		UPDATE Formulario4 SET (sAsignacionTutor,nAsistenciaConferencias,nAsistenciaSesionesClinicas,nAsistenciaSeminarios,nMesasRedondas,
		nSesionesBiograficas,nTalleres,nOtrasActividades,sAreasDescanso,sSanitariosPropios,sCondicionesAreas,sConocimientosPrevios,
		sPercepcionProcesoEnseApren,sComentPercepcionProcesoEnseApren)
		=
		(PsTutor,PnConferencias,PnSesion,PnSeminario,PnMesas,PnBiblio,PnTalleres,PnOtrasActiv,PsAreasDes,PsSanitProp,PsCondicAreasDes,
		PsConocPrevios,PsAprendizaje,PsComentariosAp)
		WHERE
		nIdFormulario4 = PnIdFormulario4;

		VnIdFormulario4 = PnIdFormulario4;
		
		UPDATE Formulario4R SET (sTipoResidente,nEnsenanzaTeorica,nPracticaClinicaSupervision,nPracticaClinicaSinSupervision,nGuardiasSupervision,
		nGuardiasSinSupervision,nIdFormulario4)
		=
		(''R1'',PnTeoriaR1,PnPracticaSupR1,PnPracticaSinR1,PnGuardiasCSupR1,PnGuardiasSSupR1,VnIdFormulario4);
	
		
		UPDATE Formulario4R SET (sTipoResidente,nEnsenanzaTeorica,nPracticaClinicaSupervision,nPracticaClinicaSinSupervision,nGuardiasSupervision,
		nGuardiasSinSupervision,nIdFormulario4)
		=
		(''R2'',PnTeoriaR2,PnPracticaSupR2,PnPracticaSinR2,PnGuardiasCSupR2,PnGuardiasSSupR2,VnIdFormulario4);
		

		UPDATE Formulario4R SET (sTipoResidente,nEnsenanzaTeorica,nPracticaClinicaSupervision,nPracticaClinicaSinSupervision,nGuardiasSupervision,
		nGuardiasSinSupervision,nIdFormulario4)
		=
		(''R3'',PnTeoriaR3,PnPracticaSupR3,PnPracticaSinR3,PnGuardiasCSupR3,PnGuardiasSSupR3,VnIdFormulario4);
		

		UPDATE Formulario4R SET (sTipoResidente,nEnsenanzaTeorica,nPracticaClinicaSupervision,nPracticaClinicaSinSupervision,nGuardiasSupervision,
		nGuardiasSinSupervision,nIdFormulario4)
		=
		(''R4'',PnTeoriaR4,PnPracticaSupR4,PnPracticaSinR4,PnGuardiasCSupR4,PnGuardiasSSupR4,VnIdFormulario4);
		

		UPDATE Formulario4R SET (sTipoResidente,nEnsenanzaTeorica,nPracticaClinicaSupervision,nPracticaClinicaSinSupervision,nGuardiasSupervision,
		nGuardiasSinSupervision,nIdFormulario4)
		=
		(''R5'',PnTeoriaR5,PnPracticaSupR5,PnPracticaSinR5,PnGuardiasCSupR5,PnGuardiasSSupR5,VnIdFormulario4);
		

		UPDATE Formulario4R SET (sTipoResidente,nEnsenanzaTeorica,nPracticaClinicaSupervision,nPracticaClinicaSinSupervision,nGuardiasSupervision,
		nGuardiasSinSupervision,nIdFormulario4)
		=
		(''R6'',PnTeoriaR6,PnPracticaSupR6,PnPracticaSinR6,PnGuardiasCSupR6,PnGuardiasSSupR6,VnIdFormulario4);
		

		UPDATE Formulario4R SET (sTipoResidente,nEnsenanzaTeorica,nPracticaClinicaSupervision,nPracticaClinicaSinSupervision,nGuardiasSupervision,
		nGuardiasSinSupervision,nIdFormulario4)
		=
		(''Otros'',PnTeoriaOtros,PnPracticaSupOtros,PnPracticaSinOtros,PnGuardiasCSupOtros,PnGuardiasSSupOtros,VnIdFormulario4);
		

END;
' LANGUAGE  'plpgsql';


-- Procedimiento que actualiza los valores del Formulario5

CREATE OR REPLACE FUNCTION sp_ActualizaFormulario5(
PsPeliculasVideocintas				VARCHAR(10),
PsGrabacionesAudio				VARCHAR(10),
PsModelosPiezasMuseo				VARCHAR(10),
PsProgramasComputarizados			VARCHAR(10),
PsOtroMaterialDidactico				VARCHAR(10),
PsEspecificacionMaterialDidactico		VARCHAR(512),
PsCanonesProyeccion				VARCHAR(10),
PsMonitoresTv					VARCHAR(10),
PsVideocasseteras				VARCHAR(10),
PsComputadoras					VARCHAR(10),
PsOtroAudiovisual				VARCHAR(10),
PsEspecificacionAudiovisual			VARCHAR(512),
PsAccesoComputo					VARCHAR(10),
PsExpedienteElectronico				VARCHAR(10),
PsSalaJuntas					VARCHAR(10),
PnNumeroSalas					INTEGER,
PnCapacidadSalas				INTEGER,
PsAulasCurso					VARCHAR(10),
PnNumeroAulasCurso				INTEGER,
PnCapacidadAulasCurso				INTEGER,
PsAuditorios					VARCHAR(10),
PnNumeroAuditorios				INTEGER,
PnCapacidadAuditorios				INTEGER,
PsBibliohemeroteca				VARCHAR(10),
PsAccesoBibliotecasDigitales			VARCHAR(10),
PsBibliotecaDigitalInstitucion			VARCHAR(10),
PsBibliotecaDigitalUNAM				VARCHAR(10),
PsBibliotecaDigitalOtras			VARCHAR(10),
PsFotocopiado					VARCHAR(10),
PsBusquedaInformacion				VARCHAR(10),
PsAccesoInternetNodos				VARCHAR(10),
PsAccesoInternetInalambrico			VARCHAR(10),
PsWifiSoloBiblioteca				VARCHAR(10),
PsWifiDiversosSitiosHospital			VARCHAR(10),
PsWifiTodoHospital				VARCHAR(10),
PsDiseminacionInformacion			VARCHAR(10),
PsPrestamosInterbibliotecarios			VARCHAR(10),
PsPrestamosDomicilio				VARCHAR(10),
PsOtrosServiciosBibliohemeroteca		VARCHAR(10),
PsEspecificacionServiciosBibliohemeroteca	VARCHAR(512),
PsSubsidioPersonal				VARCHAR(10),
PnIdFormulario5					INTEGER
)
RETURNS VOID
AS
'
BEGIN

	UPDATE Formulario5 SET(sPeliculasVideocintas,sGrabacionesAudio,sModelosPiezasMuseo,sProgramasComputarizados,sOtroMaterialDidactico,sEspecificacionMaterialDidactico,
				sCanonesProyeccion,sMonitoresTv,sVideocasseteras,sComputadoras,sOtroAudiovisual,sEspecificacionAudiovisual,sAccesoComputo,
				sExpedienteElectronico,sSalaJuntas,nNumeroSalas,nCapacidadSalas,sAulasCurso,nNumeroAulasCurso,nCapacidadAulasCurso,sAuditorios,
				nNumeroAuditorios,nCapacidadAuditorios,sBibliohemeroteca,sAccesoBibliotecasDigitales,sBibliotecaDigitalInstitucion,sBibliotecaDigitalUNAM,
				sBibliotecaDigitalOtras,sFotocopiado,sBusquedaInformacion,sAccesoInternetNodos,sAccesoInternetInalambrico,sWifiSoloBiblioteca,
				sWifiDiversosSitiosHospital,sWifiTodoHospital,sDiseminacionInformacion,sPrestamosInterbibliotecarios,sPrestamosDomicilio,
				sOtrosServiciosBibliohemeroteca,sEspecificacionServiciosBibliohemeroteca,sSubsidioPersonal)
	=
	(PsPeliculasVideocintas,PsGrabacionesAudio,PsModelosPiezasMuseo,PsProgramasComputarizados,PsOtroMaterialDidactico,PsEspecificacionMaterialDidactico,PsCanonesProyeccion,
	 PsMonitoresTv,PsVideocasseteras,PsComputadoras,PsOtroAudiovisual,PsEspecificacionAudiovisual,PsAccesoComputo,PsExpedienteElectronico,PsSalaJuntas,PnNumeroSalas,
	 PnCapacidadSalas,PsAulasCurso,PnNumeroAulasCurso,PnCapacidadAulasCurso,PsAuditorios,PnNumeroAuditorios,PnCapacidadAuditorios,PsBibliohemeroteca,
	 PsAccesoBibliotecasDigitales,PsBibliotecaDigitalInstitucion,PsBibliotecaDigitalUNAM,PsBibliotecaDigitalOtras,PsFotocopiado,PsBusquedaInformacion,PsAccesoInternetNodos,
	 PsAccesoInternetInalambrico,PsWifiSoloBiblioteca,PsWifiDiversosSitiosHospital,PsWifiTodoHospital,PsDiseminacionInformacion,PsPrestamosInterbibliotecarios,
	 PsPrestamosDomicilio,PsOtrosServiciosBibliohemeroteca,PsEspecificacionServiciosBibliohemeroteca,PsSubsidioPersonal)
	 WHERE nIdFormulario5 = PnIdFormulario5;
	
END;
' LANGUAGE  'plpgsql';


-- Procedimiento auxiliar que actualiza los valores del Formulario5

CREATE OR REPLACE FUNCTION sp_ActualizaAuxiliarFormulario5(
PsNombreRevistaN1			VARCHAR(40),
PsNombreRevistaN2			VARCHAR(40),
PsNombreRevistaN3			VARCHAR(40),
PsNombreRevistaN4			VARCHAR(40),
PsNombreRevistaN5			VARCHAR(40),
PsNombreRevistaN6			VARCHAR(40),
PsNombreRevistaN7			VARCHAR(40),
PsNombreRevistaN8			VARCHAR(40),
PsNombreRevistaN9			VARCHAR(40),
PsNombreRevistaN0			VARCHAR(40),
PsNombreRevistaE1			VARCHAR(40),
PsNombreRevistaE2			VARCHAR(40),
PsNombreRevistaE3			VARCHAR(40),
PsNombreRevistaE4			VARCHAR(40),
PsNombreRevistaE5			VARCHAR(40),
PsNombreRevistaE6			VARCHAR(40),
PsNombreRevistaE7			VARCHAR(40),
PsNombreRevistaE8			VARCHAR(40),
PsNombreRevistaE9			VARCHAR(40),
PsNombreRevistaE0			VARCHAR(40),
PnIdFormulario5				INTEGER
)
RETURNS VOID
AS
'DECLARE VnIdFormulario5 INTEGER;
BEGIN

	VnIdFormulario5 = (SELECT min(nIdRevista) FROM Revistas WHERE nIdFormulario5 = PnIdFormulario5);

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Nacional'',PsNombreRevistaN1)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Nacional'',PsNombreRevistaN2)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 1;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Nacional'',PsNombreRevistaN3)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 +  2;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Nacional'',PsNombreRevistaN4)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 3;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Nacional'',PsNombreRevistaN5)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 4;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Nacional'',PsNombreRevistaN6)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 5;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Nacional'',PsNombreRevistaN7)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 6;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Nacional'',PsNombreRevistaN8)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 7;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Nacional'',PsNombreRevistaN9)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 8;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Nacional'',PsNombreRevistaN0)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 9;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Extranjera'',PsNombreRevistaE1)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 10;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Extranjera'',PsNombreRevistaE2)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 11;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Extranjera'',PsNombreRevistaE3)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 12;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Extranjera'',PsNombreRevistaE4)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 13;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Extranjera'',PsNombreRevistaE5)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 14;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Extranjera'',PsNombreRevistaE6)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 15;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Extranjera'',PsNombreRevistaE7)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 16;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Extranjera'',PsNombreRevistaE8)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 17;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Extranjera'',PsNombreRevistaE9)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 18;

	UPDATE Revistas SET(sProcedencia,sNombreRevista)
	= (''Extranjera'',PsNombreRevistaE0)
	WHERE  nIdFormulario5 = PnIdFormulario5 AND nIdRevista = VnIdFormulario5 + 19;
END;
' LANGUAGE  'plpgsql';


-- Procedimiento que actualiza los valores del Formulario6

CREATE OR REPLACE FUNCTION sp_ActualizaFormulario6(
PsBecasInstitucionNacionales	VARCHAR(15),
PnNumeroBecasNacionales		INTEGER,
PsBecasInstitucionExtranjeros	VARCHAR(15),
PnNumeroBecasExtranjeros	INTEGER,
PnR1N				INTEGER,
PnR2N				INTEGER,
PnR3N				INTEGER,
PnR4N				INTEGER,
PnR5N				INTEGER,
PnR6N				INTEGER,
PnOtrosN			INTEGER,
PnTotalN			INTEGER,
PnR1E				INTEGER,
PnR2E				INTEGER,
PnR3E				INTEGER,
PnR4E				INTEGER,
PnR5E				INTEGER,
PnR6E				INTEGER,
PnOtrosE			INTEGER,
PnTotalE			INTEGER,
PnIdFormulario6			INTEGER
)
RETURNS VOID
AS
'DECLARE VnIdFormulario6 INTEGER;
BEGIN
	UPDATE Formulario6 SET(sBecasInstitucionNacionales,nNumeroBecasNacionales,sBecasInstitucionExtranjeros,nNumeroBecasExtranjeros)
	=	(PsBecasInstitucionNacionales,PnNumeroBecasNacionales,PsBecasInstitucionExtranjeros,PnNumeroBecasExtranjeros)
	WHERE nIdFormulario6 = PnIdFormulario6;

	VnIdFormulario6 = (SELECT min(nIdMedicosResidentes) FROM Formulario6R WHERE nIdFormulario6 = PnIdFormulario6);

	UPDATE Formulario6R SET(sProcedenciaMedico,nR1,nR2,nR3,nR4,nR5,nR6,nOtros,nTotal,nIdFormulario6)
	=	(''Nacionales'',PnR1N,PnR2N,PnR3N,PnR4N,PnR5N,PnR6N,PnOtrosN,PnTotalN,VnIdFormulario6)
	WHERE nIdFormulario6 = PnIdFormulario6 AND nIdMedicosResidentes = VnIdFormulario6;

	UPDATE Formulario6R SET(sProcedenciaMedico,nR1,nR2,nR3,nR4,nR5,nR6,nOtros,nTotal,nIdFormulario6)
	=	(''Extranjeros'',PnR1E,PnR2E,PnR3E,PnR4E,PnR5E,PnR6E,PnOtrosE,PnTotalE,VnIdFormulario6)
	WHERE nIdFormulario6 = PnIdFormulario6 AND nIdMedicosResidentes = VnIdFormulario6 + 1;
	
END;
' LANGUAGE  'plpgsql';


-- Procedimiento que actualiza los valores del Formulario7

CREATE OR REPLACE FUNCTION sp_ActualizaFormulario7(
PsProblemaDiagnosticoR1		VARCHAR(15),
PsManejoPacientesR1		VARCHAR(15),
PsProcedimientosDiagnosticoR1	VARCHAR(15),
PsParticipacionIntervencionR1	VARCHAR(15),
PsPacientesCargoR1		VARCHAR(15),
PsActividadesServicioR1		VARCHAR(15),
PsActividadesInvestigacionR1	VARCHAR(15),
PsProblemaDiagnosticoR2		VARCHAR(15),
PsManejoPacientesR2		VARCHAR(15),
PsProcedimientosDiagnosticoR2	VARCHAR(15),
PsParticipacionIntervencionR2	VARCHAR(15),
PsPacientesCargoR2		VARCHAR(15),
PsActividadesServicioR2		VARCHAR(15),
PsActividadesInvestigacionR2	VARCHAR(15),
PsProblemaDiagnosticoR3		VARCHAR(15),
PsManejoPacientesR3		VARCHAR(15),
PsProcedimientosDiagnosticoR3	VARCHAR(15),
PsParticipacionIntervencionR3	VARCHAR(15),
PsPacientesCargoR3		VARCHAR(15),
PsActividadesServicioR3		VARCHAR(15),
PsActividadesInvestigacionR3	VARCHAR(15),
PsProblemaDiagnosticoR4		VARCHAR(15),
PsManejoPacientesR4		VARCHAR(15),
PsProcedimientosDiagnosticoR4	VARCHAR(15),
PsParticipacionIntervencionR4	VARCHAR(15),
PsPacientesCargoR4		VARCHAR(15),
PsActividadesServicioR4		VARCHAR(15),
PsActividadesInvestigacionR4	VARCHAR(15),
PsProblemaDiagnosticoR5		VARCHAR(15),
PsManejoPacientesR5		VARCHAR(15),
PsProcedimientosDiagnosticoR5	VARCHAR(15),
PsParticipacionIntervencionR5	VARCHAR(15),
PsPacientesCargoR5		VARCHAR(15),
PsActividadesServicioR5		VARCHAR(15),
PsActividadesInvestigacionR5	VARCHAR(15),
PsProblemaDiagnosticoR6		VARCHAR(15),
PsManejoPacientesR6		VARCHAR(15),
PsProcedimientosDiagnosticoR6	VARCHAR(15),
PsParticipacionIntervencionR6	VARCHAR(15),
PsPacientesCargoR6		VARCHAR(15),
PsActividadesServicioR6		VARCHAR(15),
PsActividadesInvestigacionR6	VARCHAR(15),
PsProblemaDiagnosticoRO		VARCHAR(15),
PsManejoPacientesRO		VARCHAR(15),
PsProcedimientosDiagnosticoRO	VARCHAR(15),
PsParticipacionIntervencionRO	VARCHAR(15),
PsPacientesCargoRO		VARCHAR(15),
PsActividadesServicioRO		VARCHAR(15),
PsActividadesInvestigacionRO	VARCHAR(15),
PnIdFormulario7			INTEGER
)
RETURNS VOID
AS
'DECLARE VnIdFormulario7 INTEGER;
BEGIN
	VnIdFormulario7 = (SELECT min(nIdFormulario7R) FROM Formulario7R WHERE nIdFormulario7 = PnIdFormulario7);

	UPDATE Formulario7R SET(sTipoResidente,sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,
				 sActividadesServicio,sActividadesInvestigacion)
	= (''R1'',PsProblemaDiagnosticoR1,PsManejoPacientesR1,PsProcedimientosDiagnosticoR1,PsParticipacionIntervencionR1,PsPacientesCargoR1,PsActividadesServicioR1,
		PsActividadesInvestigacionR1)
	WHERE nIdFormulario7 = PnIdFormulario7 AND nIdFormulario7R = VnIdFormulario7;

	UPDATE Formulario7R SET(sTipoResidente,sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,
				 sActividadesServicio,sActividadesInvestigacion)
	= (''R2'',PsProblemaDiagnosticoR2,PsManejoPacientesR2,PsProcedimientosDiagnosticoR2,PsParticipacionIntervencionR2,PsPacientesCargoR2,PsActividadesServicioR2,
		PsActividadesInvestigacionR2)
	WHERE nIdFormulario7 = PnIdFormulario7 AND nIdFormulario7R = VnIdFormulario7 + 1;

	UPDATE Formulario7R SET(sTipoResidente,sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,
				 sActividadesServicio,sActividadesInvestigacion)
	= (''R3'',PsProblemaDiagnosticoR3,PsManejoPacientesR3,PsProcedimientosDiagnosticoR3,PsParticipacionIntervencionR3,PsPacientesCargoR3,PsActividadesServicioR3,
		PsActividadesInvestigacionR3)
	WHERE nIdFormulario7 = PnIdFormulario7 AND nIdFormulario7R = VnIdFormulario7 + 2;

	UPDATE Formulario7R SET(sTipoResidente,sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,
				 sActividadesServicio,sActividadesInvestigacion)
	= (''R4'',PsProblemaDiagnosticoR4,PsManejoPacientesR4,PsProcedimientosDiagnosticoR4,PsParticipacionIntervencionR4,PsPacientesCargoR4,PsActividadesServicioR4,
		PsActividadesInvestigacionR4)
	WHERE nIdFormulario7 = PnIdFormulario7 AND nIdFormulario7R = VnIdFormulario7 + 3;

	UPDATE Formulario7R SET(sTipoResidente,sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,
				 sActividadesServicio,sActividadesInvestigacion)
	= (''R5'',PsProblemaDiagnosticoR5,PsManejoPacientesR5,PsProcedimientosDiagnosticoR5,PsParticipacionIntervencionR5,PsPacientesCargoR5,PsActividadesServicioR5,
		PsActividadesInvestigacionR5)
	WHERE nIdFormulario7 = PnIdFormulario7 AND nIdFormulario7R = VnIdFormulario7 + 4;

	UPDATE Formulario7R SET(sTipoResidente,sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,
				 sActividadesServicio,sActividadesInvestigacion)
	= (''R6'',PsProblemaDiagnosticoR6,PsManejoPacientesR6,PsProcedimientosDiagnosticoR6,PsParticipacionIntervencionR6,PsPacientesCargoR6,PsActividadesServicioR6,
		PsActividadesInvestigacionR6)
	WHERE nIdFormulario7 = PnIdFormulario7 AND nIdFormulario7R = VnIdFormulario7 + 5;

	UPDATE Formulario7R SET(sTipoResidente,sProblemaDiagnostico,sManejoPacientes,sProcedimientosDiagnostico,sParticipacionIntervencion,sPacientesCargo,
				 sActividadesServicio,sActividadesInvestigacion)
	= (''RO'',PsProblemaDiagnosticoRO,PsManejoPacientesRO,PsProcedimientosDiagnosticoRO,PsParticipacionIntervencionRO,PsPacientesCargoRO,PsActividadesServicioRO,
		PsActividadesInvestigacionRO)
	WHERE nIdFormulario7 = PnIdFormulario7 AND nIdFormulario7R = VnIdFormulario7 + 6;
END;
' LANGUAGE  'plpgsql';


-- Procedimiento que inserta los valores del Formulario8

CREATE OR REPLACE FUNCTION sp_ActualizaFormulario8(
PsConocimientosMedicos		VARCHAR(15),
PsDestrezas			VARCHAR(15),
PnIdFormulario8			INTEGER
)
RETURNS VOID
AS
'
BEGIN
	UPDATE Formulario8 SET(sConocimientosMedicos,sDestrezas)
	= (PsConocimientosMedicos,PsDestrezas)
	WHERE nIdFormulario8 = PnIdFormulario8;
END;
' LANGUAGE  'plpgsql';